using RayDen.Library.Core.Primitives;

namespace RayDen.Library.Components.PhotonMapping {
    public interface IPhotonMap {
        ulong PhotonsCount { get; }
        Photon[] GetPlainData();
        Vector IrradianceEstimate(ref Point pos, ref Normal n, float max_dist, int nphotons);
        void Store(ref RgbSpectrum power, ref Point pos, ref Vector dir);
        void ScalePhotonMap(float scale);
        void SavePhotonMap(string fileName);
        void LoadPhotonMap(string fileName);
        void QueryMap(ref Point pos, float maxDist, int nphotons, out Photon[] result);
        void Balance();
    }
}